﻿namespace DatabaseDoc.Parameters
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
  
    public class Parameters : List<Parameter>
    {                 
        public TValue GetParameterValue<TValue>(string parameterName, TValue defaultValue = default(TValue))
        {
            var parameter = this.GetParameter(parameterName);

            if (parameter == null)
            {
                return defaultValue;
            }

            if (string.IsNullOrWhiteSpace(parameter.Value))
            {
                return defaultValue;
            }

            return (TValue)Convert.ChangeType(parameter.Value, typeof(TValue));
        }

        public Parameter GetParameter(string parameterName)
        {
            var parameter = this.FirstOrDefault(p => p.Matches(parameterName));
            return parameter;
        }

        public bool IsParameterSpecified(string parameterName)
        {
            var parameter = this.FirstOrDefault(p => p.Matches(parameterName));
            return parameter != null;
        }
    }
}